Bővítőcsomagok importálása:
In [1]:
import pandas as pd
import html5lib
In [2]:
import matplotlib.pyplot as plt
%matplotlib inline
Romániai lakosság letöltése INSSE-ról:
Előzetesen letöltött fájlútvonalt használunk.
In [7]:
#https://www.csaladen.es/present/sapientia1/exportPivot_POP105A.csv
csv_path='exportPivot_POP105A.csv' #SAJAT HELY CSV FILE
In [8]:
df=pd.read_csv(csv_path)
In [9]:
df.head()
Out[9]:
Wikipédia táblázatok letöltése
In [10]:
wiki_path="http://hu.wikipedia.org/wiki/Csíkszereda"
Ha html5llib not found
hibaüzenetet kapunk, akkor egy konzol (Command Prompt
, Parancssor
) megnyitásával és a conda install html5lib
vagy pip install html5lib
parancsokal telepítjük. Ezután újra kell indítani a Jupyter
-t.
In [11]:
df2=pd.read_html(wiki_path)
In [13]:
#ha unicode error
df2=pd.read_html('https://hu.wikipedia.org/wiki/Cs%EDkszereda')
In [14]:
df2[4]
Out[14]:
A táblázatlistából nincsen szükség csak a 5. (tehát 4-es indexű, 0-tól kezdődik) táblázatra. Ezt mentsük el az gf
változóba, aminek a típusa egy pandas dataframe
lesz.
In [21]:
gf=df2[3]
gf
Out[21]:
Csak az 1-től 4-ig terjedő sorok van szükség, a többit eldobjuk.
Ezután a 0. sort beállítjuk indexnek. Miután ez megtörtént, ezt is eldobjuk a sorok közül.
In [22]:
gf[1:4]
Out[22]:
In [23]:
ef=gf[1:4]
ef.columns=ef.loc[ef.index[0]]
ef=ef.drop(1)
ef=ef.set_index(ef.columns[0])
ef=ef.drop(u'Év',axis=1)
ef
Out[23]:
Transzponáljuk a táblázatot:
In [24]:
rf=ef.T
rf.head(2)
Out[24]:
D3plus-ba betölthető json
formátumban elmentjük a táblázat tartalmát.
Ezt úgy érhetük el, hogy végigmegyunk a táblázat értékein minden sorban majd minden oszlopban. Vigyázzunk a magyar karaterekre, ezért fontos az unicode
rendszerbe való konvertálás.
A táblázatban tárlot értékek string
-ek, ezeket egész számokká konvertáljuk, figyelembe véve a pozitív/negatív értékek formátumát.
In [26]:
#uj=[[] for i in range(len(rf.columns))]
d3=[]
ujnevek=['ujmax','ujmin']
for k in range(len(rf.index)):
i=rf.index[k]
seged={}
for j in range(len(rf.loc[i])):
uc=rf.loc[i][j]
if ',' in uc:
ertek=-int(uc[1:-2])
else:
ertek=int(uc[0:-1])
#uj[j].append(ertek)
seged[ujnevek[j]]=ertek
seged["honap"]=rf.index[k]
seged["honap2"]=k+1
d3.append(seged)
Az eredmény:
In [27]:
d3
Out[27]:
Elmentjük a fájlt:
In [28]:
import json
In [30]:
open('uj.json','w').write(json.dumps(d3))
Out[30]: